Smartcards are portable devices that include logic and memory circuitry configured to interact with computers and other like devices. In a typical computer implementation, a computer includes or is otherwise connected to a smartcard interface device that operatively interacts with the smartcard to provide connectivity to the circuitry of the smartcard for applications and/or other processes operating within the computer. Once the applicable connections are made, the smartcard circuitry can operate as designed/programmed and begin processing requests received from the computer and/or otherwise support the operations of the computer.
Smartcards and other mechanisms like them can be configured to support a wide variety of functions. By way of example, a smartcard may be configured to support user verification, service authorization and cryptographic processes. The circuitry on such smartcards typically includes processing logic and static memory that allows secret/preparatory data to be processed and stored within the smartcard in a secure manner.
Currently there are a variety of different manufactures designing and building smartcards, and hence there are different circuits with these smartcards. The smartcards are each designed to comply with certain standards, e.g., regarding the physical design, power requirements, communication interface, etc. This standardization allows different smartcards to utilize common smartcard interface devices, such as smartcard reader/writer devices that connect to computers.
One a smartcard is operatively coupled to a computer (or other like device) then processes operating within the computer can send access requests to the smartcard through the established communication interface. For example, a software application running on a computer processing unit may request access to the smartcard by generating a smartcard access request to which the smartcard is responsive in some manner. For example, a smartcard may respond to the command(s) stated in a smartcard access request by processing some data and outputting data to the requesting software application, process and/or other like entity.
Since a smartcard can be accessed by a plurality of such entities, there is a need to control access to the smartcard. Typically, a smartcard is designed to handle only one command sequence at a time. As such, arbitration logic or other like logic is usually provided to guard against multiple simultaneous command sequences, or access attempts. Such arbitration, or transaction, logic may be provided, for example, within the computer and/or smartcard interface device.
A typical command sequence, or transaction, provided to a smartcard includes an initialization sequence and one or more commands. Other data may also be included in certain transactions. The initialization sequence can be employed to verify that the smartcard is in a known state at the beginning of the transaction. Thus, for example, assume that a process running on the computer needs to access the smartcard and in doing so causes the smartcard to be configured in a certain way and/or store certain data in a particular way during a first transaction. Next, assume that the process running on the computer itself performs some additional computations and then again accesses the smartcard with a second transaction. The initialization sequence in the second transaction can be employed to verify that the smartcard has not changed in some manner since the first transaction. If the smartcard has not been changed (e.g., accessed by some other process) since the first transaction, then the second transaction can be performed. If the smartcard has been changed since the first transaction, then the previous state of the smartcard will need to be re-established accordingly before the second transaction can be performed. Thus, as illustrated in the example, there is a need to transmit, receive and process such initialization information for each transaction. This added overhead may significantly reduce performance of the implicated processes.
Consequently, there is a need for methods and apparatuses that can improve the performance of smartcards and/or access thereto by various entities.